home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include "dh0:code/code20/defines.h"
- struct MailHeader MH;
- struct PackHeader
- {
- struct MailHeader MH;
- long bytes;
- } PH;
- char conf[200];
- char MsgHead[200];
- char FileName[200];
- char OutPutName[200];
- char TempName[200];
- int TLock(char *str);
- void sr(char *str);
- main(int argc,char *argv[])
- {
- char t[10];
- int space=0;
- char p[10];
- FILE *fi,*fi1,*fo,*fo1;
- p[0]=' ';
- if(argc!=3)
- {
- printf("MsgPack version 1.0 written by Joseph Hodge\n");
- printf("Usage: MsgPack <conference path> <output name>\n");
- printf(" ie: MsgPack BBS:PD MSGS\n");
- printf("\n");
- printf("This is an AmiExpress 1.1w+ utility\n");
- printf("\n\n");
- exit(0);
- }
- strcpy(conf,argv[1]);
- strcpy(OutPutName,argv[2]);
- sr(conf);
- sr(OutPutName);
- if(!TLock(conf))
- {
- printf("Error, can't locate conference\n");
- exit(0);
- }
- PH.bytes=0L;
- sprintf(MsgHead,"%s/MsgBase/HeaderFile",conf);
- if(!TLock(MsgHead))
- {
- printf("Error, can't locate MsgBase\n");
- printf("\n");
- exit(0);
- }
-
- sprintf(TempName,"%s/MsgBase/Tmp",conf);
- fi=fopen(MsgHead,"rb");
- if(fi==NULL)
- {
- printf("Error, can't open HeaderFile\n\n");
- exit(0);
- }
- while(fread((APTR)&PH.MH,sizeof(struct MailHeader),1,fi)!=NULL)
- {
- sprintf(FileName,"%s/MsgBase/%d",conf,PH.MH.MsgNumb);
- if(TLock(FileName))
- {
- fi1=fopen(FileName,"rb");
- fo1=fopen(TempName,"ab");
- while(fread((APTR)&t,sizeof(char),1,fi1)!=NULL)
- {
- if(space>0 && t[0]!=' ')
- {
- p[1]=space;
- fwrite((APTR)&p,sizeof(char),2,fo1);
- PH.bytes +=2L; space=0;
- }
- if(t[0]==' ')
- {
- space +=1L;
- if(space==100)
- {
- p[1]=space;
- fwrite((APTR)&p,sizeof(char),2,fo1);
- PH.bytes +=2L; space=0;
- }
- }
- else
- {
- fwrite((APTR)&t,sizeof(char),1,fo1);
- PH.bytes +=1L;
- }
- }
- if(space>0)
- {
- p[1]=space;
- fwrite((APTR)&p,sizeof(char),2,fo1);
- PH.bytes +=2L; space=0;
- }
- fclose(fo1);
- fclose(fi1);
- fo1=fopen(OutPutName,"ab");
- if(fo1==NULL)
- {
- printf("Error, can't open out file\n");
- printf("\n");
- fclose(fi);
- exit(0);
- }
- fwrite((APTR)&PH,sizeof(struct PackHeader),1,fo1);
- fi1=fopen(TempName,"rb");
- while(fread((APTR)&t,sizeof(char),1,fi1)!=NULL)
- {
- fwrite((APTR)&t,sizeof(char),1,fo1);
- }
- fclose(fo1);
- fclose(fi1);
- DeleteFile(TempName);
- PH.bytes=0L;
- }
- }
- fclose(fi);
-
- }
- void sr(char *str)
- {
- register int i;
- i=strlen(str)-1;
- while(i>-1)
- {
- if(*(str+i)<=32) *(str+i)='\0'; else break;
- i--;
- }
- }
- #define ACCESS_READ -2
- int TLock(char *str)
- {
- long lock;
- if(lock=Lock(str,ACCESS_READ))
- {
- UnLock(lock); return(1);
- }
- return(0);
- }
-